'use strict';
/**
 * author：小小游 --- allen
 * date：2018.02.06
 * lastUpdateDate：2018.02.06
 * description：ES6中对象属性的新写法
 */
// 传统的做法，我们要为一个对象添加属性，我们可以这样做，如下所示：
var ok = 'ok very good!';
// obj['myId' + ' ' + ok] = '0904050123';
// obj['age' + ' ' + ok] = 28;
// 那么我们上面看看ES6是怎么做的，更加简便了
var obj = {
    ['myId' + ' ' + ok] : '0904050123',
    ['age' + ' ' + ok] : 28
    // 传统写法
    // getName : function (name) {
    //     // { getName: [Function: getName] }
    //     // console.log(this);
    //     this.name = name;
    //     return this.name;
    // }
    // ES6的写法
    // getName (name) {
    //     // { getName: [Function: getName] }
    //     // console.log(this);
    //     this.name = name;
    //     return this.name;
    // }

    // 传统的写法
    // get (firstName, lastName) {
    //     return {
    //         /**
    //          * 我只是为了证明key是可以随意，根据调用这个key找到
    //          * 对应的变量或函数，那么在ES6当中规定，如果你的key
    //          * 和value是一样的话，默认只写一个就行了
    //          */
    //          firstName,
    //          lastName
    //     };
    // }

    /**
     * ES6中写赋值和取值函数都比较简单，如下所示：
     */
    // _age : 12,
    // set age (age) {
    //     this._age = age;
    // },
    // get age () {
    //     return this._age;
    // }
};

var obj2 = {
    'name' : 'xiaoxiaoyou --- haha',
    'qq' : '13710681303 or 214913005'
};

// result：allen
// console.log(obj.getName('xiaoxiaoyou'));

// result: allen xiaoxiaoyou
// var newNames = obj.get('allen', 'xiaoxiaoyou');
// console.log(newNames);
// console.log(newNames.firstName, newNames.lastName);
// obj.age = 28;
// console.log(`我今年${obj.age}岁了`);
// console.log(obj);

// 传统导出对象的方法，需要手动一个个的导出
// 注意key可以不一样，只是不同模块导入的时候需要注意下
// exports.obj = obj;
// exports.obj2 = obj2;
// exports.objaaa = obj;
// exports.obj2bbb = obj2;
// 一次导出多个，也是传统的做法，注意这里的key也可以随意的
module.exports = {
    obj : obj,
    obj2 : obj2
};
